package com.itheima.mapper;

import com.github.pagehelper.Page;
import com.itheima.domain.Role;
import com.itheima.domain.Role;

import java.util.List;
import java.util.Map;
import java.util.Set;

public interface RoleMapper {
    //通过用户id查询所有的角色
    Set<Role> findByUserId(Integer userId);

    //新增角色
    void add(Role role);

    //设置角色和权限的关联关系
    void setRoleAndPermission(Map<String,Integer> map);

    //设置角色和菜单的关联关系
    void setRoleAndMenu(Map<String,Integer> map);

    //分页查询
    Page<Role> selectByCondition(Map<String,String> map);

    //根据id查询角色
    Role findById(Integer id);

    //通过角色id查询对应的权限ids
    List<Integer> findPermissionIdsByRoleId(Integer id);

    //通过角色id查询对应的菜单ids
    List<Integer> findMenuIdsByRoleId(Integer id);

    //根据角色id删除权限ids
    void deletePermissionIds(Integer id);

    //根据角色id删除菜单ids
    void deleteMenuIds(Integer id);

    //删除角色
    void delete(Integer id);

    //编辑角色
    void edit(Role role);

    //查询所有角色
    List<Role> findAll();

    //根据角色名查询该角色是否存在
    Role findByName(String name);

    //根据角色关键字查询数据库是否该角色已存在
    Role findByKeyword(String keyword);

    //查询跟该角色关联的所有权限数量
    Integer findPermissionCountByRoleId(Integer roleId);

    //查询跟该角色关联的所有菜单数量
    Integer findMenuCountByRoleId(Integer roleId);

    //查询跟该角色关联的所有用户数量
    Integer findUserCountByRoleId(Integer roleId);

    //根据角色id删除用户ids
    void deleteUserIds(Integer id);

    //查询所有角色排除自己的角色
    List<Role> findAllExOwn(Integer id);
}
